package com.starry.module.system.core.logger.mapper;

import com.starry.core.common.domain.vo.PageVo;
import com.starry.db.core.mapper.BaseMapperX;
import com.starry.db.core.query.LambdaQueryWrapperX;
import com.starry.module.system.api.logger.domain.qo.SysLogErrorPageQo;
import com.starry.module.system.core.logger.entity.SysLogError;
import org.apache.ibatis.annotations.Mapper;

/**
 * 异常日志-数据库服务层
 * @author xiaoke
 */
@Mapper
public interface SysLogErrorMapper extends BaseMapperX<SysLogError> {

    /**
     * 分页查询
     *
     * @param pageQo 分页参数
     * @return PageVo<SysLogError>
     */
    default PageVo<SysLogError> selectPage(SysLogErrorPageQo pageQo) {
        return selectPage(pageQo, new LambdaQueryWrapperX<SysLogError>()
                .eqIfPresent(SysLogError::getOperId, pageQo.getOperId())
                .eqIfPresent(SysLogError::getApplicationName, pageQo.getApplicationName())
                .likeIfPresent(SysLogError::getRequestUrl, pageQo.getRequestUrl())
                .likeIfPresent(SysLogError::getRequestIp, pageQo.getRequestIp())
                .likeIfPresent(SysLogError::getOperatingSystem, pageQo.getOperatingSystem())
                .likeIfPresent(SysLogError::getBrowserType, pageQo.getBrowserType())
                .likeIfPresent(SysLogError::getIpAddress, pageQo.getIpAddress())
                .eqIfPresent(SysLogError::getProcessStatus, pageQo.getProcessStatus())
                .betweenIfPresent(SysLogError::getOperTime, pageQo.getOperTimeStart(), pageQo.getOperTimeEnd())
                .orderByDesc(SysLogError::getOperTime)
        );
    }
}

